package com.elitel.frame.main.dao.ext;

import com.elitel.frame.main.entity.BaseQueryfieldcache;
import com.elitel.frame.main.entity.ext.BaseQueryfieldcacheExt;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ExtBaseQueryfieldcacheMapper {

    /**
     * 根据服务和服务类型查询缓存条件字段配置
     * @param serviceid
     * @param servicetype
     * @return
     */
    List<BaseQueryfieldcacheExt> queryCacheFieldByService(@Param("serviceid") String serviceid,
                                                       @Param("servicetype") String servicetype);

    /**
     * 根据服务和服务类型和参数组查询缓存条件字段配置（表格字段）
     * @param serviceid
     * @param servicetype
     * @param parametergroup
     * @return
     */
    List<BaseQueryfieldcacheExt> queryCacheFieldByServiceIdGroupId(@Param("serviceid") String serviceid,
                                                                   @Param("servicetype") String servicetype,
                                                                   @Param("parametergroup") String parametergroup);

    /**
     * 根据服务和服务类型和参数组查询缓存条件字段配置（视图字段）
     * @param serviceid
     * @param servicetype
     * @param parametergroup
     * @return
     */
    List<BaseQueryfieldcacheExt> queryCacheFieldByServiceIdGroupIdtoView(@Param("serviceid") String serviceid,
                                                                         @Param("servicetype") String servicetype,
                                                                         @Param("parametergroup") String parametergroup);


    /**
     * 删除缓存配置信息根据服务ID和分组
     * @param serviceid
     * @param parametergroup
     * @return
     */
    Integer deleteQueryFieldCacheListByServiceIdGroup(@Param("serviceid") String serviceid,
                                                      @Param("parametergroup") String parametergroup);

    /**
     * 删除缓存配置信息根据服务ID和类型
     * @param serviceid
     * @return
     */
    Integer deleteQueryFieldCacheListByServiceId(@Param("serviceid") String serviceid);

    /**
     * 查询缓存条件组(如果serviceId serviceType groupId均为空 则查询所有的) 组概念 以组为单位
     * @return
     */
    List<BaseQueryfieldcacheExt> queryAllFieldCacheGroup(@Param("serviceid") String serviceid,
                                                         @Param("servicetype") String servicetype,
                                                         @Param("parametergroup") String parametergroup);

    /**
     * 根据条件字段删除缓存配置
     * @param list
     * @return
     */
    Integer deleteQueryFieldCacheByFieldaddonsguid(List<String> list);

    /**
     * 根据主键查询
     * @param guid
     * @return
     */
    BaseQueryfieldcacheExt getQueryFieldCacheByGuid(String guid);

}
